﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SeguroSoft.Models;


namespace SeguroSoft.Tests.Fakes
{
    public class FakeUsuarioRepositorio: IUsuarioRepositorio
    {
        private List<Usuario> db;

        public FakeUsuarioRepositorio()
        {
            db = new List<Usuario>();
            for (int i = 0; i < 5; i++)
            {
                Usuario u=new Usuario();
                u.Usuario1 = "Miguel"+i;
                u.Nombre = "nombre"+i;
                u.Apellido = "apellido"+i;
                u.Correo="mecorre1"+i+"@uc.cl";
                u.Direccion="69"+1;
                u.Clave=""+i;
                db.Add(u);
            }
        }

        public Usuario getUsuario(string nombre)
        {
            return db.SingleOrDefault(d => d.Usuario1.Equals(nombre));
        }

        public void AgregarUsuario(Usuario usuarioNuevo)
        {
            db.Add(usuarioNuevo);
        }

        public IQueryable<Usuario> BusquedaPorApellido(string apellido)
        {
            return (from usuario in db
                    where usuario.Apellido.Contains(apellido)
                    select usuario).AsQueryable();
        }

        public IQueryable<Usuario> BusquedaPorCorreo(string correo)
        {
            return (from usuario in db
                    where usuario.Correo.Contains(correo)
                    select usuario).AsQueryable();
        }

        public IQueryable<Usuario> BusquedaPorDirecion(string direccion)
        {
            return (from usuario in db
                    where usuario.Direccion.Contains(direccion)
                    select usuario).AsQueryable();
        }

        public IQueryable<Usuario> BusquedaPorNombre(string nombre)
        {
            return (from usuario in db
                   where usuario.Nombre.Contains(nombre)
                   select usuario).AsQueryable();
        }

        public void EliminarUsuario(Usuario usuario)
        {
            db.Remove(usuario);
        }

        public IQueryable<Usuario> getAll()
        {
            return db.AsQueryable();
        }

        public void Save()
        {
            throw new NotImplementedException();
        }

        public void CambiarClaveUsuario(string usuario, string claveNueva)
        {
            var a = db.SingleOrDefault(d => d.Usuario1.Equals(usuario));
            a.Clave = claveNueva;
        }

    
    }
}
